package ui;

import java.awt.Canvas;

/**
* This is the base class for simple plots.
* It offers methods to set the problem coordinate system
* and the viewport, as well as transformation functions 
* from user coordinates to display units.
*
* @version 1.0
* @author Hans U. Gerber (<a href="mailto:gerber@ifh.ee.ethz.ch">gerber@ifh.ee.ethz.ch</a>)
*/
public class Plot extends Canvas {
	protected double xMin = -0.05;
	protected double yMin = -1.05;
	protected double xMax = +1.05;
	protected double yMax = +1.05;
	private int vLeft =  0;
	private int vTop = 0;
	private int vRight = 100;
	private int vBottom = 100;

	public void setWindow(double xMin, double yMin, double xMax, double yMax) {
		this.xMin = xMin;
		this.xMax = xMax;
		this.yMin = yMin;
		this.yMax = yMax;
	}

	public void setViewport(int vLeft, int vTop, int vRight, int vBottom) {
		this.vLeft = vLeft;
		this.vTop = vTop;
		this.vRight = vRight;
		this.vBottom = vBottom;
	}

	public int xformX(double x) {
		return (int)((x - xMin)/(xMax - xMin) * (double)(vRight - vLeft)) + vLeft;
	}

	public int xformY(double y) {
		return (int)((y - yMin)/(yMax - yMin) * (double)(vTop - vBottom)) + vBottom;
	}
}
